import request from '@/utils/request'
import { ResType } from '@/api/types'
import { LoginData } from '../auth/types'

// 查询列表
// : ResType<object> 有的地方也不这么写。
export function getUserList(params: object) {
  return request({
    url: '/api/user/list',
    method: 'get',
    params: params
  })
}

// 新增、编辑
// 检查loginName重复
export function saveUser(data: object): ResType<object> {
  return request({
    url: '/api/user/save',
    method: 'post',
    data: data
  })
}

// 新增
export function addUser(data: object){
  return request({
    url: '/api/user/save',
    method: 'post',
    data: data
  })
}

// 删除
// 不能删除自己的账户
export function deleteUser(data: object): ResType<object> {
  return request({
    url: '/api/user/delete',
    method: 'post',
    data: data
  })
}

// 编辑
export function editUser(data: object) {
  return request({
    url: '/api/user/edit',
    method: 'post',
    data: data
  })
}

// 单条查询
export function getUserById(params: object): ResType<object> {
  return request({
    url: '/api/user/',
    method: 'get',
    params: params
  })
}

// 重置密码
// 不能重置自己的密码
export function resetPwd(data: object): ResType<object> {
  return request({
    url: '/api/user/resetPwd',
    method: 'post',
    data: data
  })
}

// 用户分配角色
// 先删除用户所有角色，再插入新勾选
// useId 用户id
// roleIds 角色id数组
export function assignRole(data: object): ResType<object> {
  return request({
    url: '/api/user/assignRole',
    method: 'post',
    data: data
  })
}

// user type



/** 用户分页对象 */
export interface UserPageVO {
  /** 用户头像URL */
  avatar?: string;
  /** 创建时间 */
  createTime?: Date;
  deptCode?: Number;
  /** 部门名称 */
  deptName?: string;
  /** 用户邮箱 */
  email?: string;
   /** 性别 */
  genderKey?: string;
  /** 性别 */
  genderLabel?: string;
  /** 用户ID */
  id?: number;
  /** 手机号 */
  mobile?: string;
  /** 用户昵称 */
  nickName?: string;
  roleCodes?: string[];
  /** 角色名称，多个使用英文逗号(,)分割 */
  roleNames?: string;
  /** 用户状态(1:启用;0:禁用) */
  status?: number;
  /** 用户名 */
  userName?: string;
}

export interface UserPage{
  total: number,
  data: UserPageVO[]
}


/** 用户表单类型 */
export interface UserForm {
  /** 用户头像 */
  avatar?: string;
  /** 部门Code */
  deptCode?: number;
  /** 邮箱 */
  email?: string;
  /** 性别 */
  genderKey?: number;
  /** 用户ID */
  id?: number;
  /** 手机号 */
  mobile?: string;
  /** 昵称 */
  nickName?: string;
  /** 角色ID集合 */
  roleCodes?: string[];
  /** 用户状态(1:正常;0:禁用) */
  status?: number;
  /** 用户名 */
  userName?: string;
}